<!DOCTYPE html>
<html lang="en" xmlns:th="https://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<h1>欢迎访问shiro首页</h1>
<a th:href="@{login}">登录</a>
<a th:href="@{register}">注册</a>
<br><br>
<div th:text="${msg}" style="color: red">消息</div>
<h2><a th:href="@{testPermissionByAnnotation}">2、 注解方式授权(分别登录、登出测试效果)</a></h2>
<div style="border-style: solid;padding: 5px">
    <h2>3、 标签方式授权-thymeleaf(分别登录、登出测试效果)</h2>
    <h3>3.1、 认证</h3>
    <p shiro:user="">1、 认证通过或已记住的用户</p>
    <p shiro:guest="">2、 是访客</a></p>
    <p shiro:authenticated="">3、 已认证通过的用户。不包含已记住的用户，这是与user标签的区别所在。</p>
    <p shiro:notAuthenticated="">4、 未认证通过用户，与authenticated标签相对应。与guest标签的区别是，该标签包含已记住用户。</p>
    <p>5、 输出当前用户信息，通常为登录帐号信息。
        principal==
        <shiro:principal/>
    </p>

    <h3>3.2.1、 权限-角色判断</h3>
    <p shiro:hasRole="admin">1、 验证当前用户是否属于该角色。</p>
    <p shiro:hasAllRoles="admin, user">2、 验证当前用户是否属于以下所有角色。</p>
    <p shiro:hasAnyRoles="admin, other">3、 验证当前用户是否属于以下任意一个角色。</p>
    <p shiro:lacksRole="admin">4、 与hasRole标签逻辑相反，当用户不属于该角色时验证通过。</p>

    <h3>3.2.2、 权限-权限判断</h3>
    <p shiro:hasPermission="user:add:01">1、 验证当前用户是否拥有指定权限。</p>
    <p shiro:hasAllPermissions="user:add:01, user:insert:01">2、 验证当前用户是否拥有以下所有权限。</p>
    <p shiro:hasAnyPermissions="user:add:01, user:insert:02">3、 验证当前用户是否拥有以下任意一个权限。</p>
    <p shiro:lacksPermission="user:add:01">4、 与hasPermission标签逻辑相反，当前用户没有制定权限时，验证通过。</p>
</div>
</body>
</html>